Automatically Discovering Temporal Properties for Program Verification

نویسندگان

  • Jinlin Yang
  • David Evans
چکیده

This paper reports on our experience using a dynamic analysis tool, Terracotta, to automatically infer temporal properties, and a model checker, Java PathFinder, to check the inferred properties. To our best knowledge, this is the first experiment using a model checker to check automatically inferred properties. We introduce two key ideas to make our approach effective. First, we develop techniques for handling context information in a program’s execution traces so that some interesting properties can be discovered. Second, we infer properties in a single threaded environment and to check them in a multi-threaded one. We evaluate our approach on a prototype implementation of a UNIX-like file system, Daisy. Our techniques revealed a bug in Daisy and identified several interesting and subtle temporal behaviors.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Automatically Inferring Temporal Properties

3. PROBLEM STATAMENT Temporal properties specify constraints on the order in which a program’s state changes. Satisfying certain temporal properties is essential for a program to be correct. Many formal verification tools have been developed to check certain temporal properties. Researchers have demonstrated the practical value of these tools in some domains (e.g. verifying the safety of device...

متن کامل

Automatically Verifying Temporal Properties of Pointer Programs with Cyclic Proof

We propose a deductive reasoning approach to the automatic verification of temporal properties of pointer programs, based on cyclic proof. We present a proof system whose judgements express that a program has a certain temporal property over memory state assertions in separation logic, and whose rules operate directly on the temporal modalities as well as symbolically executing programs. Cyclic...

متن کامل

Automatically refining partial specifications for heap-manipulating programs

Automatically verifying heap-manipulating programs is a challenging task, especially when dealing with complex data structures with strong invariants, such as sorted lists and AVL/red-black trees. The verification process can greatly benefit from human assistance through specification annotations, but this process requires intellectual effort from users and is error-prone. In this paper, we pro...

متن کامل

Automatically Refining Partial Specifications for Program Verification

Automatically verifying heap-manipulating programs is a challenging task, especially when dealing with complex data structures with strong invariants, such as sorted lists and AVL/red-black trees. The verification process can greatly benefit from human assistance through specification annotations, but this process requires intellectual effort from users and is error-prone. In this paper, we pro...

متن کامل

Inferring Programmer Intent and Related Errors from Software

Software is difficult to write and maintain. Much of the challenge in developing a program lies in specifying it—understanding precisely what it should be doing. Both human-oriented tasks (like fixing a bug) and automated tasks (like mechanical verification) require knowledge of a program’s intended behavior. For the vast majority of software projects, though, complete and well-documented speci...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2005